001    /**
002     * Created by IntelliJ IDEA.
003     * User: Wei Wang
004     * Date: Nov 30, 2002
005     * Time: 2:11:24 PM
006     */
007    
008    package EVolve.visualization.XYViz.ValValViz;
009    
010    import EVolve.visualization.XYViz.XYVisualization;
011    import EVolve.visualization.*;
012    import EVolve.visualization.Dimension;
013    import EVolve.visualization.VizFactory.VisualizationFactory;
014    import EVolve.util.predefinedutils.VizInfo;
015    import EVolve.data.*;
016    import EVolve.Scene;
017    import EVolve.exceptions.VizInfoCreateException;
018    import EVolve.exceptions.NoDataPlotException;
019    
020    import javax.swing.*;
021    import java.util.*;
022    import java.util.StringTokenizer;
023    
024    public abstract class ValueValueVisualization extends XYVisualization{
025        protected ValueDimension xAxis,yAxis;
026        protected ReferenceDimension entityIdFilter,filter2; // use to decide color of a dot
027        protected int subjectIndex;
028        protected long beginCall, endCall;
029    
030        public ReferenceDimension getLinkableDimension(int dim) {
031            return null;
032        }
033    
034        public void sort() {
035            try {
036                canvas.setImage(image.getImage());
037                canvas.repaint();
038                enableBrowseSourceMenu();
039            } catch (NoDataPlotException e) {
040                Scene.showErrorMessage(e.getMessage());
041            }
042        }
043    
044        public void preVisualize() {
045            timeMap.clear();
046            xOffset = -1;
047            timeMap.clear();
048        }
049    
050        public HashMap getCurrentConfigure() {
051            try {
052                HashMap configure = super.getCurrentConfigure();
053    
054                VizInfo vizInfo = new VizInfo();
055                vizInfo.setFactory((VisualizationFactory)configure.get("Factory"));
056                vizInfo.setSubject((ElementDefinition)configure.get("Subject"));
057    
058                String[] dimensionDefs = new String[dimension.length];
059                for (int i=0; i<dimension.length; i++) {
060                    dimensionDefs[i] = dimension[i].getName() ;
061                }
062                configure.put("Dimension",vizInfo.createDimension(dimensionDefs));
063    
064                return configure;
065            } catch (VizInfoCreateException e) {
066                Scene.showErrorMessage(e.getMessage());
067            }
068            return null;
069        }
070    
071        public void autoUpdateConfiguration(HashMap config) {
072            super.autoUpdateConfiguration(config);
073    
074            if (config.get("BeginCall")!=null) {
075                beginCall = ((Long)(config.get("BeginCall"))).longValue();
076            }
077            if (config.get("EndCall")!=null) {
078                endCall = ((Long)(config.get("EndCall"))).longValue();
079            }
080        }
081    
082        public void updateMenu() {
083            super.updateMenu();
084    
085            MenuElement[] menus = popup.getSubElements();
086            String [] toBeDeleted = {"Sort"};
087    
088            for (int i=0; i<toBeDeleted.length; i++) {
089                for (int j=0; j<menus.length; j++) {
090                    if (((JMenuItem)menus[j]).getText().indexOf(toBeDeleted[i]) != -1)
091                        popup.remove(j);
092                }
093            }
094        }
095    
096        protected void getSelection() {
097            Selection selection = Scene.getFilter().getActiveSelection();
098    
099            if (selection != null) {
100                beginCall = 0;
101                endCall = Integer.MAX_VALUE/2;
102            }
103        }
104    
105        protected String getEntityUnderMouse() {
106            return null;
107        }
108    
109        protected void changeOrientation() {
110        }
111    
112        protected long[] findEventInterval(long startTime, long endTime) {
113            long time[] = new long[2], event[] = new long[2];
114            time[0] = startTime;
115            time[1] = endTime;
116            event[0] = 0;
117            event[1] = Long.MAX_VALUE;
118    
119            if (timeMap != null) {
120                for (int i=0; i<time.length; i++) {
121                    long lastTarget = -1;
122                    for (int j = 0; j< timeMap.size(); j++) {
123                        long[] map = (long[])timeMap.get(j);
124                        if ((lastTarget<= time[i])&&(map[0]>=time[i])) {
125                            event[i] = map[1];
126                            break;
127                        }
128                    }
129                }
130            }
131            return event;
132        }
133    
134        public Object clone() {
135            ValueValueVisualization o = null;
136            o = (ValueValueVisualization)super.clone();
137    
138            o.xAxis = (ValueDimension)xAxis.clone();
139            o.yAxis = (yAxis == null) ? null : (ValueDimension)yAxis.clone();
140            o.entityIdFilter = (entityIdFilter == null) ? null : (ReferenceDimension)entityIdFilter.clone();
141            o.filter2 = (filter2 == null) ? null : (ReferenceDimension)filter2.clone();
142            o.panelConfiguration = o.createConfigurationPanel();
143            o.createMenu();
144            return o;
145        }
146    }